home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1994 November: Tool Chest / Dev.CD Nov 94.toast / New System Software Extensions / OpenDoc A6 / OpenDoc Parts Framework / OPF / Found / FWString / Sources / FWStrgAr.cpp < prev    next >
Encoding:
Text File  |  1994-04-21  |  2.9 KB  |  80 lines  |  [TEXT/MPS ]

  1. //========================================================================================
  2. //
  3. //    File:                FWStrgAr.cpp
  4. //    Release Version:    $ 1.0d1 $
  5. //
  6. //    Creation Date:        3/28/94
  7. //
  8. //    Copyright:    © 1994 by Apple Computer, Inc., all rights reserved.
  9. //
  10. //========================================================================================
  11.  
  12. #ifndef FWSTRGAR_H
  13. #include "FWStrgAr.h"
  14. #endif
  15.  
  16. #ifndef FWARDYNA_H
  17. #include "FWArDyna.h"
  18. #endif
  19.  
  20. #ifndef FWARSTRM_H
  21. #include "FWArStrm.h"
  22. #endif
  23.  
  24. #pragma segment Strings
  25.  
  26. //========================================================================================
  27. //    Define string RTTI information
  28. //========================================================================================
  29.  
  30. FW_DEFINE_CLASS_M0(FW_CString)
  31. FW_DEFINE_CLASS_M1(FW_CString32,        FW_CString)
  32. FW_DEFINE_CLASS_M1(FW_CString255,        FW_CString)
  33. FW_DEFINE_CLASS_M1(FW_CDynamicString,    FW_CString)
  34.  
  35. //========================================================================================
  36. // Register archiver read/write methods for string classes
  37. //========================================================================================
  38.  
  39. FW_REGISTER_ARCHIVE_CLASS(FW_LString32,      FW_CString32,      (FW_TStringArchiver<FW_CString32>::Read),      (FW_TStringArchiver<FW_CString32>::Write))
  40. FW_REGISTER_ARCHIVE_CLASS(FW_LString255,     FW_CString255,     (FW_TStringArchiver<FW_CString255>::Read),     (FW_TStringArchiver<FW_CString255>::Write))
  41. FW_REGISTER_ARCHIVE_CLASS(FW_LDynamicString, FW_CDynamicString, (FW_TStringArchiver<FW_CDynamicString>::Read), (FW_TStringArchiver<FW_CDynamicString>::Write))
  42.  
  43. //========================================================================================
  44. // FW_InitializeStrings
  45. //========================================================================================
  46.  
  47. void FW_InitializeStrings(void)
  48. {
  49. #ifndef FW_HAS_INSTANCE_DATA
  50.     FW_CDynamicArchiver::MergeArchiverMaps();
  51. #endif
  52. }
  53.  
  54. //----------------------------------------------------------------------------------------
  55. // FW_CStringArchiver::Read
  56. //----------------------------------------------------------------------------------------
  57.  
  58. void FW_CStringArchiver::Read(FW_CReadableArchive & archive, FW_CString& string)
  59. {
  60.     FW_ByteCount byteCount;
  61.     
  62.     archive >> byteCount;
  63.     string.GrowCapacity(byteCount);
  64.     FW_ASSERT(byteCount <= string.GetCapacity());
  65.     archive.Read(string.fRepresentation, byteCount);
  66.     string.SetLength(FW_CharactersInBlock(string.fRepresentation, byteCount), byteCount);
  67. }
  68.  
  69. //----------------------------------------------------------------------------------------
  70. // FW_CStringArchiver::Write
  71. //----------------------------------------------------------------------------------------
  72.  
  73. void FW_CStringArchiver::Write(FW_CWritableArchive & archive, 
  74.                                 const FW_CString &string)
  75. {
  76.     FW_ByteCount byteCount = string.GetByteLength();
  77.     archive << byteCount;
  78.     archive.Write(string.fRepresentation, byteCount);
  79. }
  80.